package TableModels;

import Entities.HdUsers;
import Util.Constantes;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author ferrari
 */
public class UsersRelatorioTableModel {
    
    private static DefaultTableModel model;

    private UsersRelatorioTableModel() {
    }
    
    public static void init(){
        model = new DefaultTableModel();
        model.setColumnCount(5);
        String[] colunas = new String[]{
                Constantes.COLUNA_CODIGO,
                Constantes.COLUNA_NM_USER,
                Constantes.COLUNA_DE_EMAIL,
                Constantes.COLUNA_SETOR,
                Constantes.COLUNA_TP_USER
        };
        model.setColumnIdentifiers(colunas);
    }
    
    private static void addUser(HdUsers user){

        List<String> s = new ArrayList<>();
        try{
            s.add(String.valueOf(user.getCoUser()));
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(user.getNmUser());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(user.getDeEmailUser());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(user.getCoSetorUser().getDeSetor());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(user.getCoTipoUser().getDeTipoUser()); 
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        
        String []  linha = new String[]{
            s.get(0),
            s.get(1),
            s.get(2),
            s.get(3),
            s.get(4)
        };
        
        getModel().addRow(linha);
    }
    
    public static DefaultTableModel addAllUsers(List<HdUsers> listaUsers){
        limpaTabela();
        try{
            for (HdUsers hdUsers : listaUsers) {
                addUser(hdUsers);
            }
            return getModel();
        }catch(Exception e){
            return getModel();
        }
    }
    
    public static DefaultTableModel getModel() {
        if (model == null) {
            init();
        }
        return model;
    }
    
    public static void limpaTabela(){
        getModel().setRowCount(0);
    }
}
